-
Notifications
You must be signed in to change notification settings - Fork 21
Support negative height in BMP files #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The BMP file format standard allows for the bitmap height to be defined as a negative number. When negative, it means that instead of the origin being at the lower left it is instead at the upper left when the height is negative. This file change supports those images where the origin is in the upper left.
do you have an example to test with |
I have a test file with a negative height if you need to test this. |
Here is the file (it is an autostereogram so the apparent random bits are intentional :-) https://www.dropbox.com/s/dcpiorjwkiwgj22/asgadafruit.bmp?dl=0 |
I can test this later with the supplied file tonight or tomorrow. @cogliano Do you think you can make the changes to pass the build? It looks like its a pylint error. If not, I can PR against yours to make the change. |
theight = height | ||
if theight < 0: | ||
theight = 0 - theight | ||
bitmap = bitmap(width, theight, colors) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you just declare the bitmap as below, and remove lines 65-67?
bitmap = bitmap(width, abs(height), colors)
This would save the (very limited) memory and time spent allocating the object "theight", since it isn't used again.
Edit: I got the line numbers wrong the first time. I tested the PR with and without this change, and both worked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, I should have seen that. I just made a pull request.
Updating https://github.com/adafruit/Adafruit_CircuitPython_ADXL34x to 1.10.3 from 1.10.2: > Merge pull request adafruit/Adafruit_CircuitPython_ADXL34x#9 from hartzell/patch-2 Updating https://github.com/adafruit/Adafruit_CircuitPython_BME280 to 2.3.2 from 2.3.1: > Merge pull request adafruit/Adafruit_CircuitPython_BME280#27 from ncguk/patch-1 Updating https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground to 2.1.4 from 2.1.3: > Merge pull request adafruit/Adafruit_CircuitPython_CircuitPlayground#69 from caternuson/iss68 Updating https://github.com/adafruit/Adafruit_CircuitPython_DS18X20 to 1.2.0 from 1.1.3: > Merge pull request adafruit/Adafruit_CircuitPython_DS18X20#12 from LBertrandDC/asynchronous-functions Updating https://github.com/adafruit/Adafruit_CircuitPython_DS2413 to 1.1.3 from 1.1.2: > Merge pull request adafruit/Adafruit_CircuitPython_DS2413#9 from dherrada/master Updating https://github.com/adafruit/Adafruit_CircuitPython_GPS to 3.4.0 from 3.3.0: > Merge pull request adafruit/Adafruit_CircuitPython_GPS#34 from dherrada/master > Merge pull request adafruit/Adafruit_CircuitPython_GPS#31 from dherrada/master > Merge branch 'master' into master Updating https://github.com/adafruit/Adafruit_CircuitPython_HTU21D to 0.9.0 from 0.8.1: > Merge pull request adafruit/Adafruit_CircuitPython_HTU21D#5 from dherrada/master Updating https://github.com/adafruit/Adafruit_CircuitPython_IRRemote to 3.4.0 from 3.3.2: > Merge pull request adafruit/Adafruit_CircuitPython_IRRemote#27 from tannewt/remove_debug > Merge pull request adafruit/Adafruit_CircuitPython_IRRemote#25 from makermelissa/master Updating https://github.com/adafruit/Adafruit_CircuitPython_MCP3xxx to 1.1.0 from 1.0.3: > Merge pull request adafruit/Adafruit_CircuitPython_MCP3xxx#14 from brentru/update-examples Updating https://github.com/adafruit/Adafruit_CircuitPython_MPR121 to 2.0.4 from 2.0.3: > Merge pull request adafruit/Adafruit_CircuitPython_MPR121#20 from ntoll/master Updating https://github.com/adafruit/Adafruit_CircuitPython_MPRLS to 1.1.0 from 1.0.3: > Merge pull request adafruit/Adafruit_CircuitPython_MPRLS#6 from romanakozak/patch-1 Updating https://github.com/adafruit/Adafruit_CircuitPython_MSA301 to 1.1.0 from 1.0.0: > added tap detection. Couldn't make latching work Updating https://github.com/adafruit/Adafruit_CircuitPython_Nunchuk to 0.1.1 from 0.1.0: > Merge pull request adafruit/Adafruit_CircuitPython_Nunchuk#5 from ntoll/master Updating https://github.com/adafruit/Adafruit_CircuitPython_PCT2075 to 1.0.1 from 1.0.0: > fixed typos for (yet to be used) fault queue length Updating https://github.com/adafruit/Adafruit_CircuitPython_SHT31D to 2.1.0 from 2.0.2: > Merge pull request adafruit/Adafruit_CircuitPython_SHT31D#11 from WoefulDerelict/periodic_data_acquisition > Merge pull request adafruit/Adafruit_CircuitPython_SHT31D#10 from WoefulDerelict/temperature_docstring_fix Updating https://github.com/adafruit/Adafruit_CircuitPython_SSD1306 to 2.6.4 from 2.6.3: > Merge pull request adafruit/Adafruit_CircuitPython_SSD1306#29 from adafruit/tannewt-patch-1 Updating https://github.com/adafruit/Adafruit_CircuitPython_Thermal_Printer to 1.1.3 from 1.1.2: > Merge pull request adafruit/Adafruit_CircuitPython_Thermal_Printer#10 from caternuson/README_update Updating https://github.com/adafruit/Adafruit_CircuitPython_TLC59711 to 1.1.3 from 1.1.2: > Merge pull request adafruit/Adafruit_CircuitPython_TLC59711#6 from demophoon/add-blinka-to-requirements-txt Updating https://github.com/adafruit/Adafruit_CircuitPython_AVRprog to 1.2.0 from 1.1.3: > Merge pull request adafruit/Adafruit_CircuitPython_AVRprog#10 from aaronaverill/master Updating https://github.com/adafruit/Adafruit_CircuitPython_FancyLED to 1.3.1 from 1.3.0: > Merge pull request adafruit/Adafruit_CircuitPython_FancyLED#8 from schlafa/patch-1 Updating https://github.com/adafruit/Adafruit_CircuitPython_ImageLoad to 0.9.2 from 0.9.1: > Merge pull request adafruit/Adafruit_CircuitPython_ImageLoad#21 from fionawhim/rle-bmp > Merge pull request adafruit/Adafruit_CircuitPython_ImageLoad#19 from cogliano/patch-2 > Merge pull request adafruit/Adafruit_CircuitPython_ImageLoad#18 from cogliano/patch-1 > Merge pull request adafruit/Adafruit_CircuitPython_ImageLoad#17 from deshipu/master > Merge pull request adafruit/Adafruit_CircuitPython_ImageLoad#15 from tannewt/fix_one_bit Updating https://github.com/adafruit/Adafruit_CircuitPython_miniesptool to 0.1.5 from 0.1.4: > Merge pull request adafruit/Adafruit_CircuitPython_miniesptool#11 from dherrada/master Updating https://github.com/adafruit/Adafruit_CircuitPython_MotorKit to 1.3.1 from 1.3.0: > Merge pull request adafruit/Adafruit_CircuitPython_MotorKit#20 from adario7/master Updating https://github.com/adafruit/Adafruit_CircuitPython_Requests to 1.1.3 from 1.1.2: > Merge pull request adafruit/Adafruit_CircuitPython_Requests#11 from jerryneedell/jerryn_bytes Updating https://github.com/adafruit/Adafruit_CircuitPython_RTTTL to 2.3.0 from 2.2.2: > Merge pull request adafruit/Adafruit_CircuitPython_RTTTL#14 from hexthat/patch-1 Updating https://github.com/adafruit/Adafruit_CircuitPython_SimpleIO to 2.0.0 from 1.2.1: > Merge pull request adafruit/Adafruit_CircuitPython_SimpleIO#46 from jepler/issue45
The BMP file format standard allows for the bitmap height to be defined as a negative number. When negative, it means that instead of the origin being at the lower left it is instead at the upper left. This file change supports those images where the origin is in the upper left.
Reference: https://en.wikipedia.org/wiki/BMP_file_format